package mymyoux.io.mserveur.events
{
	import flash.events.Event;
	
	import mymyoux.events.IStaticListenable;
	import mymyoux.io.mserveur.mapping.PyGram;
	/**
	 * MBinarySocketEvent est envoyé par une MBinarySocket.
	 * @author Mymyoux
	 * @version 1.0
	 * <p><b>N'est normalement pas utilisé directement.</b></p>
	 */
	public class MBinarySocketEvent extends Event implements IStaticListenable
	{
		/**
		 * Evenement envoyé lors de la conexion réussie au serveur. Après identification.
		 */
		public static const CONNECT:String="connect";
		/**
		 * Evenement envoyé lorsqu'une erreur se produit avec le serveur.
		 */
		public static const ERROR:String="error";
		/**
		 * Evenement envoyé lorsqu'une donnée est transmise par le serveur.
		 */
		public static const DATA:String="data";
		/**
		 * Evenement envoyé lorsque le client est accepté dans un salon.
		 */
		public static const ENTER:String="enter_room";
		/**
		 * Evenement envoyé lors de la fermeture du socket.
		 */
		public static const DISCONNECT:String="disconnect";
		/**
		 * Evenement envoyé si le serveur n'est plus présent dans la BDD.
		 */
		public static const BAD_SERVER:String="bad_server";//si le serveur n'existe plus ds la BDD
		/**
		 * Evenement envoyé lors de la connection d'un client dans un des salons où est le client.
		 */
		public static const PEOPLE_IN:String=PyGram.PEOPLE_IN;
		/**
		 * Evenement envoyé lors de la déconnection d'un client dans un des salons où est le client.
		 */
		public static const PEOPLE_OUT:String=PyGram.PEOPLE_OUT;
		/**
		 * @private
		 */
		protected var _message:PyGram;
		/**
		 * Crée un évènement de type MBinarySocketEvent
		 * @param Type de l'évènement.
		 * @param message Message envoyé par le serveur ou par MBinarySocket.
		 * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false.
		 * @param cancelable Determines whether the Event object can be canceled. The default values is false.
		 */
		public function MBinarySocketEvent(type:String,message:PyGram,bubbles:Boolean=false,cancelable:Boolean=false)
		{
			super(type,bubbles,cancelable);
			_message=message;
		}
		 /**
		 * @inheritDoc
		 */
		 public override function clone():Event
		 {
		 	return new MBinarySocketEvent(type,message,bubbles,cancelable);
		 }
		/**
		 * Message soit envoyé par le serveur, soit généré par le MBinarySocket.
		 */
		public function get message():PyGram
		{
			return _message;
		}
		/**
		 * @copy mymyoux.core.IObject#toString()
		 */
		public override function toString():String
		{
			return "[MBinarySocketEvent type=\""+type+"\" message=\""+message+"\"]";
		}

	}
}